home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / clang / cslib15b.zip / INCLUDE / CSARRAY.H < prev    next >
C/C++ Source or Header  |  1994-12-20  |  3KB  |  96 lines

  1. /***********************************************************************
  2.  
  3.                                       CSDB Library, Release 1.5.b 
  4.  
  5.        Definition of a virtual array class with
  6.        boundary checking.
  7.  
  8.                                           Copyright(c) 1994 
  9.                                           Combis 
  10.                                           The Netherlands   
  11. ***********************************************************************/
  12.  
  13. #ifndef __CSARRAY_H
  14. #define __CSARRAY_H
  15.  
  16. #include "stdlib.h"
  17. #include "stdio.h"
  18. #include "csedstr.h"
  19.  
  20. #ifdef CS_DEBUG
  21.   #define  TEST_IN(key) test_index(key);
  22. #else
  23.   #define  TEST_IN(key)
  24. #endif
  25.  
  26.  
  27.  typedef union
  28.  {
  29.    void * p;
  30.    long   l;
  31.  } dat;
  32.  
  33.  
  34. #pragma warn -sig
  35.  
  36. class ARRAY
  37. {
  38.   private:
  39.  
  40.  
  41. protected:
  42.  
  43.       size_t nr_lin;
  44.       dat    *lbuf;
  45.       STR    d_name;
  46.  
  47.       void test_index(long key);
  48.  
  49.  
  50.   public:
  51.  
  52.       ARRAY(void);
  53.       ~ARRAY(void);
  54.       void zap(void);
  55.       void debug_name(char *s);
  56.       void size(size_t nr);
  57.       void insert(long key,void *d)     { TEST_IN(key)  lbuf[key].p=d;    }
  58.       void insert(long key,long  d)     { TEST_IN(key)  lbuf[key].l=d;    }
  59.       void delet(long key)         { TEST_IN(key)  lbuf[key].p=NULL; }
  60.       void *locate(long key)         { TEST_IN(key)  return lbuf+key;  }
  61.       void *locate(size_t key)         { TEST_IN(key)  return lbuf+key;  }
  62.       void search(long key,void *&d)     { TEST_IN(key)  d=lbuf[key].p; }
  63.       void search(long key,long  &d)     { TEST_IN(key)  d=lbuf[key].l; }
  64.       void search(long key,void *&d,void** &add)
  65.                      { TEST_IN(key)  d=*(add=&lbuf[key].p); }
  66.       void search(long key,long  &d,long * &add)
  67.                      { TEST_IN(key)  d=*(add=&lbuf[key].l); }
  68.       void insert(int key,dat  d)     { TEST_IN(key)  lbuf[key]=d;  }
  69.       void insert(int key,void *d)     { TEST_IN(key)  lbuf[key].p=d;  }
  70.       void insert(int key,void *d,void ** &add)
  71.                      { TEST_IN(key)  add=&(lbuf[key].p=d); }
  72.       void insert(int key,long    d)     { TEST_IN(key)  lbuf[key].l=d;    }
  73.       void insert(int key,long    d,long * &add)
  74.                      { TEST_IN(key)  add=&(lbuf[key].l=d); }
  75.       void delet(int key)         { TEST_IN(key)  lbuf[key].p=NULL; }
  76.       void search(int key,void *&d)     { TEST_IN(key)  d=lbuf[key].p; }
  77.       void search(int key,long    &d)     { TEST_IN(key)  d=lbuf[key].l; }
  78.  
  79.       int  report(char *name,int sub=10);
  80.       void report(FILE *fipo,int sub=10);
  81.  
  82.       long export(FILE *fp,long nr);
  83.       long export(FILE *fp)         { return export(fp,nr_lin+1); }
  84.       long import(FILE *fp,long number);
  85.       void empty(void);
  86.  
  87.  
  88. };
  89.  
  90.  
  91.  
  92. #pragma warn .sig
  93.  
  94.  
  95. #endif
  96.